// 版权归陈超所有

#pragma once

#include "CoreMinimal.h"
#include "AbilitySystemComponent.h"
#include "CC_AbilitySystemComponent.generated.h"

/*定义多播委托,用于向小部件控制器广播效果标签*/
DECLARE_MULTICAST_DELEGATE_OneParam(FEffectAssetTags, const FGameplayTagContainer& /* AssetTags */)

/**
 * 
 */
UCLASS()
class CC_AURA_API UCC_AbilitySystemComponent : public UAbilitySystemComponent
{
	GENERATED_BODY()
public:
	/*能力物品信息设置:
	 * 1.当游戏效果应用自身时绑定回调函数EffectApplied
	 */
	void AbilityActorInfoSet();

	/*定义一个多播委托: 能力资产标签*/
	FEffectAssetTags OnEffectAssetTags;

protected:
	/*当游戏效果应用自身时的回调函数*/
	void EffectApplied(UAbilitySystemComponent* AbilitySystemComponent, const FGameplayEffectSpec& EffectSpec, FActiveGameplayEffectHandle ActiveEffectHandle);
	
};
